package com.idroc.cdfs.node;

import java.util.Properties;

/**
 * 各种节点的抽象
 * @author zhandl(yuyoo4j@163.com)
 * @companay www.idroc.com
 * @Aug 8, 2009 1:33:21 PM
 * @memo 各种节点支持的最小方法集合
 */
public interface INode {
	 	
	/**
	 * 初始化
	 * @param props 初始化参数集合
	 */
	void initialize(Properties props);
	
	/**
	 * 打开节点
	 * @return -- true, 当且仅当节点成功打开
	 * @memo 节点只有当打开后才能对外提供节点的服务和功能
	 */
	boolean open();
	
	/**
	 * 关闭节点
	 * @return -- true, 当且仅当节点成功关闭
	 * @memo 节点当关闭时将不对外提供服务和功能
	 */
	boolean close();
	
	/**
	 * 查找一个数据项
	 * @param key -- 数据项的key
	 * @return -- 数据项的数据
	 */
	byte[] find(byte[] key);
	
	/**
	 * 保存一个数据项
	 * @param key -- 数据项的key
	 * @param value -- 数据项的数据
	 * @return -- true, 当且仅当成功保存了数据项
	 */
	boolean store(byte[] key, byte[] value);
	
	/**
	 * 删除一个数据项
	 * @param key -- 数据项的key
	 * @return -- true, 数据项被删除,或者不存在数据项
	 */
	boolean delete(byte[] key);
	
	/**
	 * 打开节点的一个游标
	 * @return -- 游标
	 * @memo 节点游标可以对节点中的数据项进行遍历和具有部分操作节点的功能
	 */
	ICursor openCursor();
}
